Chat Documentation This is the original documentation for chat 2.06. It's not very easy to read, so I would suggest skimming over it and then looking at it later if you need to. ____________________________________________________ This is a the documentation for Chat - an TCP/IP Chat Server for the Mac. It was originally written by Peter N. Lewis. Extensive modifications by me have turned it into version 2. If anyone would like to write some better documentation for Chat 2.0 - please do so and send it to me - I just do not have the time to do it. Email any comments/suggestions/complaints/etc. to: nneul@umr.edu This software is shareware - if you want to distribute it on any commercial medium (information services, CD, etc.) contact me first - I would appreciate a sample copy of the CD for example. The latest version of Chat and it source are available on my ftp site: pluto.cc.umr.edu in /pub/chat-20x I would appreciate a note from anyone who has done anything interesting with the source - and before anyone redistributes any derivative works. Also, please let me know if you are using the Chat room for something - I'd like to know it's worth it. Enjoy... -- Nathan Neulinger (nneul@umr.edu) **** WHATS NEW IN 2.0.6 **** The user password bug has been fixed. A new option has been added to allow the chat room application to beep whenever someone connects. Adminstrative variables have been added to allow administrative setting of beep on login, prompt for channel at login, and subject. They are BEEP, PROMPT, and SUBJECT, respectively. A new menu option, though currently not implemented, has been added which will allow the administrator to control whether users can change the subject of the channel. The help text has been updated to reflect the change in the /CHANNEL command, which (as of v.2.0.5) lists the channels and subjects if no channel is specified. **** WHATS NEW IN 2.0.5 **** The bug that caused the username to not be displayed in the "User has left chat room" message has been fixed. The icon mask has been fixed, it used to not be easy to click, only a small area of it was sensitive. A new user variable is available "SUBJECT", allows the user to set the subject of a channel. The "/CHANNEL" command will now display a list of channels, and the subjects for those channels, when a channel name is not entered. It also puts a * in front of the channel you are currently on. There is a new STR# resource that holds the default subjects for the channels in the chat room. A new preferences option and menu item is available - Prompt For Channel At Login. If this is turned off (the default now), the user will be automatically placed in the first channel. The login screens will now allow up to three chances to type in the correct/valid response. You now will not be immediately logged out if you make a typo in the channel name. **** WHATS NEW IN 2.0.4 **** Several bugs have been fixed including the infamous port 1420 problem. Also, a beep has been added that is sounded when you receive a page. The About box has been changed. Chat is now distributed by default with log files for all channels turned off, this can be easily changed by filling in file names. The default port is now set to 23, so you can simply telnet to the machine chat is running on, without specifying a port number. The problem with Chat not quitting when you shut down or restart has been fixed. For you programmer types out there - let this be a lesson to you: "Never name the Quit item in your file menu anything other than 'Quit' - it was 'Quit Chat Room'". **** WHATS NEW IN 2.0.3 **** You can now switch between Foreground Only and Background Only versions of the Chat Room by simply changing the Background only bit in the size resource. Thanks to Peter Lewis for providing the code to make this possible. To cut down on size, the Chat room will be distributed in the foreground only mode. The utilities menu has been enabled. Features available in utilities menu: Disabling User Passwords Disabling Logins Disabling Whispers Disabling Yells Default settings for these options are read in from the 'CPrf' resource in the application. A 'TMPL' for editing this resource is also present. The default port has been moved from a STR resource to the preferences resource. The setting of disabling user passwords is restricted if their are no passwords present in the file. A new administrator command has been added - \SET to allow setting of those disabled options from within the chat room. For example - with the default admin password of "admin". The command "\SET admin logins off" will disable any new logins. Typing "\SET admin" will list the options. A new die rolling routine has been added - allows easy selection of different die configurations in the standard roll playing notation such as 2d20 to roll 2 twenty sided dice. **** WHATS NEW IN 2.0.2 **** By popular demand - I have reverted to Chat being a BackGround only application. However, instead of it only being background only, you have the choice. Two applications are distributed with the archive. The (BG) one is Background Only. The (FG) is Foreground Only. The only difference between the two is the "Only Background" bit in the SIZE resource, and the 0 or 1 value in Str #3 in the Globals string resource. I know it is a cheap way to program it, but I don't have all that much time to work on it. If anyone would like to write me a small little piece of Pascal code that would check to see what the Background Only bit is, please do. Plans for 2.0.3 - someone sent me some new code for the die rolling routines. Will put that in as soon as I have a chance to rewrite it to match the style of the rest of the program. Thanks to Erich at UIUC for the new code. Other Concerns: Chat logs can be placed in a specific location by typing the full path in the ChannelLogNames string resource. Eg. "HD 80:Chat Logs:Channel 1 Log" for example. Without the quotes! :) There is still a problem with Chat crashing after running for an extended time. So far - this appears to only affect Chat - it doesn't seem to bother any other programs that are running. Chat has been successfully tested and run under A/UX 3.0.1. **** WHATS NEW IN 2.0.1 **** Added the capability for leaving the user passwords string resource empty. Now, if there is nothing in the user passwords string resource the chat room will not ask for a user password on login. Also fixed a small bug - well, didn't actually fix it, just turned off Pascal Range Checking in the compile. Problem caused Chat to crash on any machine not running MacsBug. **** WHATS NEW IN 2.0 **** This is a new and improved version of Peter N. Lewis's Chat 1.1 Macintosh TCP/IP Chat Server. It now supports changing of channels, changing of user names, and many other nifty features. To customize it you will need to use ResEdit - most of the program's strings are contained in resources so it can be customized rather extensively. New Commands: User Help /HELP Changing channel /CHANNEL ch-name Whispering to another user /WHISPER user Yelling to all channels /YELL msg Change your name /SET NAME newname Page a user to your channel /PAGE user List users on all channels /LISTALL List users on current channel only /LIST Rolling dice (for games I suppose) /DICE count Hiding from other users (Admin Only) \HIDE admin-pswd Unhideing from other users (Admin Only) \UNHIDE admin-pswd Disconnect A User (Admin Only) \KILL admin-pswd user Disconnect All (Admin Only) \RESTART admin-pswd Administrator Help \HELP User and Administrator Passwords The default TCP port to connect to: 1420 The default user password for Chat 2.0 is "permission". The default admin password for Chat 2.0 is "admin". A sample telnet session to the chat server is enclosed. ************************************************************************* The following is the documentation enclosed w/ Chat 1.1.0. ************************************************************************* Chat 1.1.0 © Peter N Lewis, Mar 1992. This program is free, but I retain the copyright on it. This program was initially written to assist in the online meetings of the TopSoft group, a group of mac programmers on the Internet, dedicated to producing free, high quality software and sample code. To get more information about this group, ftp to syrinx.kgs.ukans.edu and check out the /topsoft directory, or send some mail to ts-request@syrinx.kgs.ukans.edu and ask to be added to the mailing list. • Contents What Chat Does Using Chat Customising Chat How It Works Limitations Small Print Warranty Fine Print Version History The Author • What Chat Does Chat is a background only application that lets Macs with MacTCP 1.1 serve as a very primitive IRC. Once Chat is running on your mac, multiple people can Telnet to port 1420 on your mac and have online discussions . Chat has no macintosh user interface, the only way to use it is by telneting to your mac. I wrote this to hold the weekly online meetings of the TopSoft group, which have proved very successful. Chat can support upwards of 12 users with the current memory partition (200k), and can support an arbitrarily large number of users given enough memory (though MacTCP will probably blow up if you try too many :-). Add about 5 or 10k for each extra users you want. • Using Chat You must have MacTCP 1.1 installed in order to use Chat. Put Chat or an alias to it in the Startup Folder (System 7) or make it a startup application (System 6 - note you will have to use "Selected Applications and DAs" since background only applications are not counted as Open Applications under System 6). Double-Click Chat to get it started now. Now you need to connect to Chat using NCSA/Telnet, MUDDweller, telnet on unix or VMS machines or some other method... NCSA/Telnet: Choose Open Connection from the File Menu, type in the name (or IP number) of your mac, a space and then the port number (1420). MUDDweller: Choose New, then choose TCP/IP Address from the configure menu and type in the ip numbers of your mac (or the name for newer versions of MUDDweller), and the port number (1420). Hit OK, and then choose Open Connection from the Configure menu. Unix: telnet 1420 VMS: telnet /port=1420 When you connect, it will ask you for a channel. Channels are defined in a STR# resource inside chat (no, I'm not going to make a fancy UI for editing it). By default, there are two channels, “normal” and “nolog”. The normal channel is logged to Normal Log on your system volume. The nolog channel is not logged (obviously :-). After that it will ask you for your name. You are now logged in, but Chat is very boring with only one person logged in, so get someone else to log in as well, or log in yourself several times. From now on anything you type will be echoed to all other users in a format like this: I type “Hello”, and others would see: PeterL: Hello Here is a sample session: **** Sample Session **** unixprompt> telnet mymac 1420 Welcome to Peter's Private Party Line. Select a channel ("normal" is a good bet):normal Enter your name:PeterL Welcome. Commands start with a slash (/), everything else goes to the channel. Warning: Everything said is logged and may be used against you. /LIST FredB Hi Fred, whats up? FredB: Ahh, Peter you showed up. Nothing much, usual stuff. FredB: How's Chat coming along? FredB: How is Chat coming along? **** Here, I typed the lines: telnet mymac 1420 normal (third line) PeterL (fourth line) Hi Fred, whats up? Try it out, you’ll get the idea pretty quick. There are several commands, they all start with a slash (/), to get a list, just type "/": **** / Bad command. Commands are: /QUIT - exit chat, but why would you want to leave? /LIST - display a list of people on this channel. /DO - display an action like "Yourname " /ME - same as /DO /SET - set a variable (eg /SET echo true) everything else is sent to everyone on the channel. **** There is also a silent command which only the owner should use, QUITNOW (case IS relevant), which closes the server down. Don’t use this on someone else’s server! As the owner, you can change this command by changing the Globals STR#, but you probably wont need to, since no one reads the documentation anyway, they'll never find out about it :-) There is no way to change channels once you are on, or to listen in on more than one channel at once (except by connecting to the server more than once of course). • Customising Chat You can customise Chat by using ResEdit to change the STR# resource which contains the port number, the channel names, and log names, the Chat Log creator, the commands, and all the strings that Chat produces. • How It Works Chat is a very simple program, I wrote it in about three hours, plus I've done about a dozen more hours neatifying it, and a couple hours getting it ready to send out. The entire program (ignoring the TCP and other libraries) is only a couple hundred lines, and as such should be a good starting sample code for writing TCP applications (the pascal source code will be sent out as with most of my programs). All it does is listen to the TCP port specified in the STR# resource. When it gets a new connection it starts up another listener, and deals with the user, first getting their channel and name, and then echoing all their messages to the other users on that channel. It does this by keeping a list of all currently logged on users, when a line comes in from one user, it goes thru the list and echoes it (with the user’s name prepended) to all other users with the same channel. • Limitations Chat probably require the 128k ROM and System version 6.0 or higher. It may well only work with a Mac IIsi (not mine)-:, and System 7.0. It definitely requires MacTCP v1.1 or better yet 1.1.1. There are several caveats. Second, in a “crowded room”, you may have troubles with people all speaking at once (which is not a real problem for users using MUDDweller, but mucks up the screens of users who connect with other clients). The solution we adopted was to start and end you messages with a blank line, so people can tell when you have finished, and avoid interrupting you once you have started. • Small Print This program is free, don’t bother sending me any money for this one, it was only a days work anyway. If you like it, send me an Email message saying hello, or a postcard or something like that. You may distribute Chat any way you wish as long as you don't charge for it (reasonable download costs such as Compu$erve are ok I guess (although who would call Compu$erve's download costs reasonable?)). It would probably be a good idea to keep this documentation file with the program, but I'm hardly likely to check up on you now am I! I don't guarantee any support, but I always answer my Email (I'm not so good with snail-mail and those horrible little bits of paper and such!). If I don't answer Email its because your message didn't get to me, or my reply bounced (so try again, and include a valid Internet address if you can). You MAY NOT distribute it on any magnetic media you charge for without my express permission unless you charge less that US$3 for the disks (and no membership costs). I am sick and tired of seeing people selling PD/Shareware software for ten dollars a disk without any reimbursement to the authors. If you are a legitimate user group, let me know and I'll waive teh "no membership costs" restriction. • Warranty There is absolutely NO warranty, guarantee, hint, suggestion or anything else that would lead anyone to think that Chat do anything stated in this documentation. It usually does not destroy data (systems, hardware, etc), and has sometimes worked on my Mac with System 7.0. It is highly unlikely that it will work with older systems (pre 6.0 anyway) or with the 64k ROM. It might work with the other models, but I don't have them all, so I don't know (Anyone want to give me a IIfx (or one of those new beasts? How did they come up with such a terrible name???) so I can check for compatibility?). It might work with future versions of MacTCP (after 1.1.1), but who can tell? If it works on your system (or especially if it doesn't!), send me a postcard or some Email and let me know! • Fine Print Peter Lewis hereby disclaims all warranties relating to this software, whether express or implied, including without limitation any implied warranties of merchantability or fitness for a particular purpose. Does any one really read this stuff. Peter Lewis will not be liable for any special, incidental, consequential, indirect or similar damages due to loss of data or any other reason, even if Peter Lewis or an agent of his has been advised of the possibility of such damages. In no event shall Peter Lewis be liable for any damages, regardless of the form of the claim. The person using the software bears all risk as to the quality and performance of the software. • Version History Still to do - Perhaps a password facility. Private message facility - nope, I've decided not to do this. Uniteruptable messages Log play back v1.1.0 ~Multiple channels ~New / command structure v1.0.1 ~Word wrapping lines. v1.0.0 ~Moved strings into resource fork. ~Improved strings ***** * The Author Programs written by me: Anarchie 1.1.0 - Macintosh Archie client and FTP browser. Morpion 1.0.0 - A simple solitaire game. FTPd 2.2.0 - Macintosh FTP server. Daemon 1.0.0 - Macintosh multi-protocol daemon. Script Daemon 1.0.0 - Telnet->AppleScript gateway DeHQX 2.0.1 - BinHex decoder (use StuffIt Expander instead). Finger 1.3.7 - Macintosh Finger client/daemon. Talk 1.1.1 - Macintosh Talk client/daemon. MacTCP Watcher 1.1.0 - Display MacTCP state information. MacBinary II+ 1.0.2 - MacBinary II+ encoder/decoder. ObiWan 4.0.1 - Online help system. Bolo Finder 1.0.2 - Display the results from Mike Ellis' Bolo Tracker. Bolo RandomMap 1.1.0 - Generate a random map for Bolo. FetchNews 1.0.0b - Fetch News for use with NewsWatcher demo mode. Chat 1.1.0 - Multiuser primitive irc-like daemon. The latest versions of my programs are available from: amug.org:/pub/ftp1/peterlewis redback.cs.uwa.edu.au:/others/peterlewis and French versions of some of my programs may be available from: ftp.sri.ucl.ac.be:/pub. You can sometimes get the latest development versions from redback, but only use the development versions if you have some specific problem - in which case you should tell me, especially since the development versions on redback are often not the latest versions I have) Send postcards, comments, bug reports, wishes, and payments to: Peter Lewis, 10 Earlston Way, Booragoon, Perth, WA, 6154, AUSTRALIA or by electronic mail to: Internet: peter.lewis@info.curtin.edu.au Bitnet: peter.lewis%info.curtin.edu.au@cunyvm.bitnet UUCP: uunet!munnari.oz!info.curtin.edu.au!peter.lewis *****